package main

import "fmt"

func main() {
	data := [3]int{10, 20, 30}
	for i, x := range data {
		// 第一个循环中 x 显示的是原始值，因为 x 是在循环开始时从数组中复制出来的。
		if i == 0 {
			data[0] += 100
			data[1] += 200
			data[2] += 300
		}
		fmt.Printf("x: %d , data: %d \n", x, data[i])
	}

	for i, x := range data[:] {
		// 第二个循环中 x 显示的是修改后的值，因为切片 data[:] 与原数组共享底层数组，但是 x 的值在条件判断之前就已经被赋值了，
		//所以它显示的是条件判断前数组的值。
		if i == 0 {
			data[0] += 100
			data[1] += 200
			data[2] += 300
		}
		fmt.Printf("x: %d , data: %d \n", x, data[i])
	}
}
